// 这个文件就是咱们的入口文件

import Vue from './vue/index'
// import Vue from 'vue'
import Watcher from './vue/core/observer/watcher'

const vm = (window.vm = new Vue({
  // data 为何要是一个函数，因为，要让实例之间的数据互相隔离
  data() {
    // 这里的 this 指向的是 当前 vue 实例
    return {
      count: 0,
      msg: 'hello',
      user: {
        name: 'zs',
        age: 18,
        parent: {
          name: 'zsf',
          age: 180,
        },
      },
      list: [
        { name: 'zs1', age: 1 },
        { name: 'zs2', age: 2 },
        { name: 'zs3', age: 3 },
        { name: 'zs4', age: 4 },
        { name: 'zs5', age: 5 },
      ],
    }
  },
  // watch: {
  //   msg(newValue, oldValue) {
  //     console.log(
  //       '监听到了 msg 的变化，新值：',
  //       newValue,
  //       '，旧值：',
  //       oldValue,
  //       '，this：',
  //       this
  //     )
  //   },
  //   'user.name'(newValue, oldValue) {
  //     console.log(
  //       '监听到了 user 的变化，新值：',
  //       newValue,
  //       '，旧值：',
  //       oldValue,
  //       '，this：',
  //       this
  //     )
  //   },
  // },
}))

new Watcher(vm, 'user.parent.name', function (newValue, oldValue) {
  console.log(
    '监听到 user.parent.name 发生了变化，新值：',
    newValue,
    '，旧值：',
    oldValue,
    'this:',
    this
  )
})
